This file is going to be a simple document on how to go about creating a mobile.

MCREATE = This is the command you will use to create a mobile, you can create
          a completely new one or use a similar existing one to copy and save
          yourself some typing.
          EX: mcreate 500 Testing
              This will create a new mobile called testing using vnum 500.
          EX: mcreate 500 400 Testing
              This will create a new mobile called testing and set it up
              like mobile 400.

   MSET = This is the command you will use to set stuff on mobiles.
          See HELP MSET

 MPEDIT = This is the command you will use to add programs to mobiles.
          See HELP MPEDIT

 MPCOPY = This command allows you to copy mobile programs from one mobile to
          another.
          See HELP MPCOPY

   To modify a prototype mobile you must have the mobile you are modifying set
as a prototype.

*******************************************************************************************************

   Building Mobs on LOP1.38
   By Hanaisse
---------------------------
   Contents:

   - Create a mobile
   - Example creation
   - Other useful commands while building
   - Mob programs
   - Create a shopkeeper
   - Determining HPS/HR/DR

---------------------------

   CREATE A MOBILE
   ----------------

1. Have a set of vnums vassigned to you by level Head or higher. The same vnums will be used for all rooms, mobiles and objects.
2. Use MCREATE to create an instance (prototype) of a mobile. You can create a new one or copy an existing (cvnum). Typically mobs are created in the room in which they should repop but can be adjusted when setting resets.

   Usage: mcreate <vnum> [cvnum] <mobile name>

   This command allows you to create a new mobile using the specified vnum and
   keywords. Keywords are words the mobile will be known as, always better to have more than one.
   If [cvnum] is used it will make the new mobile match the one it copies.

   Example;
  >mcreate 21032 white fluffy kitten
   You wave your arms about, and A newly created white fluffy kitten appears at your command!
   MobVnum:  21032   Keywords:  white fluffy kitten

3. Use MSET to set the mobs parameters. Alternately you can use MSET <vnum> ON to set fields without having to continually type mset <vnum> <field>. Hitting enter while in MSET ON will give you an mstat of the mob you are working on.If using mset on, type DONE when completed to exit from mset.

   Usage: mset <vnum> <field> <value>

   Field being one of:
   name = default based on keywords during mcreate
   short = a short description of the mob, what someone sees when the mob does an action
   long = a long description of the mob, what someone sees when the mob is in the room
   desccription = puts you in an editor to write a description of the mob that someone sees when they look at the mob
   sex = (0) neutral, (1)male, (2)female - can use either word or number to set
   level = level of mob (defaults to 1 if not set)
   str, int, wis, dex, con, cha, luck = attributes of mob (defaults to all 13 if not set)
   hp = number of hitpoints (defaults to 1 if not set)  ******* See end of this document
   mana = amount of mana (defaults to 100 if not set)
   move = number of moves (defaults to 100 if not set)
   hitroll = amount of hits mob can take (defaults to 8 if not set and adds 8 if set)
   damroll = amount of damage mob can deal (defaults to 8 if not set and adds 8 if set)
   align = alignment of the mob (defaults to 0 - neutral)
   armor = armorclass of the mob 
   pos = mobs current position (defaults to standing and overwrites long desc)
          Dead                 Mortally Wounded       Incapacitated
          Stunned              Sleeping               Fighting (Berserk)
          Resting              Fighting (Aggressive)  Sitting
          Fighting (Standard)  Fighting (Defensive)   Fighting (Evasive)
          Standing (default)   Mounted
   defpos = default position when the mob resets
   mentalstate = ranged setting of mobs mentalstate (defaults to -10 if not set)
   sav1, sav2, sav3, sav4, sav5 = saving throws (defaults to 0 if not set)
          sav1 = saving vs. poison or death
          sav2 = saving vs. wands
          sav3 = saving vs. paralysis or petrification (stun)
          sav4 = saving vs. breath
          sav5 = saving vs. spells or staves
   gold = amount of gold player can collect on loot
   affected = flags of conditions on the mob (can use more than one)
          Blind     Invisible     Detect_evil     Detect_invis     Detect_magic
          Detect_hidden           Sanctuary       Faerie_fire      Infrared
          Curse     Poison        Protect         Paralysis
          Sneak     Hide          Sleep           Charm            Flying
          Pass_door Floating      Truesight       Detect_traps     Scrying
          Fireshield Shockshield  Iceshield       Aqua_breath      Possess
          Berserk   Acidmist      Venomshield     Silence          Nomove
   speaks = what language the mob can speak
   speaking = language the mob speaks in (defaults to common if not set)
   spec = set a spec_func on a mob
                        SPECIAL  DESCRIPTION
        ---------------------  --------------------------------------------
              spec_breath_any  Mobiles uses the breaths randomly.
             spec_breath_acid  Mobile has acid breath.
             spec_breath_fire  Mobile has fire breath.
            spec_breath_frost  Mobile has frost breath.
              spec_breath_gas  Mobile has gas breath.
        spec_breath_lightning  Mobile has lightning breath.
              spec_cast_adept  Mobile casts helpful spells.
                               cure blindness, cure light, cure poison, cure serious,
                               remove curse, cure critical, heal
             spec_cast_cleric  Mobile casts offensive spells during battle.
                               cause light, cause serious, cause critical, earthquake,
                               blindness, dispel evil, curse, dispel magic
               spec_cast_mage  Mobile casts offensive spells during battle.
                               energy drain, fireball
             spec_cast_undead  Mobile casts offensive spells during battle.
                               curse, blindness, poison, energy drain, gate
                    spec_fido  Mobile eats corpses.
                 spec_janitor  Mobile picks up trash.
                  spec_poison  Mobile poisons during battle.
                   spec_thief  Mobile steals gold from players.
   minhit/maxhit = range of hps mob can load with
   resistant = resistance, susceptibilty or immunity to certain types of attacks such as;
            FIRE         WIND      EARTH     WATER     ICE        COLD
            ELECTRICITY  ENERGY    BLUNT     PIERCE    SLASH      ACID
            POISON       DRAIN     SLEEP     CHARM     NONMAGIC   MAGIC
            PARALYSIS    HOLY      SHADOW
            **Added in for resistances to be % based.
            **(Removed immune, absorb, susceptible).
            (If < 0 in a resistant you are susceptible to it).
            (If > 0 and < 100 in a resistant you are resistant to it).
            (If 100 in a resistant you are immune to it).
            (If > 100 in a resistant you will absorb it).
   numattacks = number of attacks mob will execute during combat 
                (range is 0-20, default is 0 or no attacks)
   attack = what kind of attacks the mob can do (can set more than one)
            bite         claws           tail         punch
            kick         trip            bash         stun
            gouge        backstab        feed         drain
            firebreath   frostbreath     acidbreath   lightnbreath
            gasbreath    poison          blindness    causeserious
            earthquake   causecritical   curse        fireball
   part = specifc body parts the mob can have
            HEAD   ARMS      LEGS      HEART   BRAINS       GUTS         HANDS
            FEET   FINGERS   EAR       EYE     LONG_TONGUE  EYESTALKS    TENTACLES
            FINS   WINGS     TAIL      SCALES  BEAK         HAUNCHES     HOOVES
            PAWS   FORELEGS  FEATHERS
   defense = defensive moves the mob can use
            parry        dodge      heal       curelight   cureserious  curecritical
            dispelmagic  dispelevil sanctuary  fireshield  shockshield  shield
            bless        stoneskin  teleport   disarm      venomshield
   flags = actflags (can be toggled on/off)
                MOBFLAG | DESCRIPTION
            ------------|---------------------------------------------------------------
               sentinel | Mobile always stays at its post.
              scavenger | Mobile picks up items of value.
             aggressive | Mobile attacks players.
               stayarea | Mobile does not leave its home area.
                  wimpy | Mobile flees when low in hits.
                    pet | Mobile can be used in creating a petshop.
               practice | Players can "practice" at this mobile.
               immortal | Mobile is immortal.
              meta_aggr | Mobile is VERY aggressive.
                running | Mobile is running (moves twice as fast)
              mountable | Mobile can be mounted.
                mounted | Mobile is mounted.
                scholar | Mobile can teach languages.
              secretive | Mobile will not echo acts. MOBs actions are invisible.
                hardhat | Mobile not damaged by falling objects.
               mobinvis | Mobile is invisible to both pc's and non pc's.
               noassist | Mobile won't assist other mobs in a fight.
               pacifist | Mobile cannot be attacked.
               noattack | Mobile won't use any physical attacks.
               annoying | Is annoying and likely will get hit by other mobiles?
             statshield | Keeps lower level imms from touching the mobile's stats.
              prototype | Mobile is under construction.
                 banker | Players may use "bank" at this mobile.
             questgiver | Players may use "aquest" at this mobile.
             undertaker | Players may use "retrieve" at this mobile.
   
   NOTE: Mobs do not require class or race fields.
         Flags Prototype and NPC are default. 

   Example; (if a field is not listed it was left as default)
   ----------------------------------------------------------

   >mset 21032 short A fluffy white kitten
    Short set.
    Prototype Short set to match.

   >mset 21032 long A fluffy white kitten is exploring.
    Long set.
    Prototype Long set to match.

   >mset 21032 description (puts you in editor mode)
    Begin entering your text now (/? = help /s = save /c = clear /l = list)
   -----------------------------------------------------------------------
   > 
   This cute little furry white kitten prances and pounces its way
   > 
   around the streets, always ready for adventure.
   > 
   /s
   Editing has stopped.

   >mset 21032 sex 2
    Sex set to 2[female].
    Prototype Sex set.

   >mset 21032 hp 20
    Hp set to 20.

   >mset 21032 mana 0
    mana set to 0.

   >mset 21032 hitroll 10
    Hitroll set to 10.
    Prototype Hitroll set to match.

   >mset 21032 damroll 20
    Damroll set to 20.
    Prototype Damroll set to match.

   >mset 21032 pos sitting
    Done.

   >mset 21032 gold 50
    Gold set to 50.
    Prototype Gold set to match.

   >mset 21032 part paws
    paws part set.
    paws index part set.

   (or more than one at a time)
   >mset 21032 part tail ear haunches
    tail part set.
    tail index part set.
    ear part set.
    ear index part set.
    haunches part set.
    haunches index part set.

   >mset 21032 defense dodge
    dodge defense set.
    dodge index defense set.

   >mset 21032 flags prototype pet pacifist
    prototype flag removed.
    prototype index flag removed.
    pet flag set.
    pacifist flag set.

4. Once prototype flag is removed the mob can be set into the area.
5. Use SAVEAREA often to save completed work as you progress in case of a dreaded MUD crash.

   Usage: savearea [<area filename>]
   This command allows you to save a prototype area.
6. See RESETS.TXT for how to create resets for your area.


OTHER USEFUL COMMANDS FOR MOB BUILDING
----------------------------------------

- Use MSTAT to display information about an existing mob.

   Usage: mstat <target>
   This command allows you to see the statistics on the target.
   target = mob name, mob vnum, player

  Example of mob created above;

   >mstat 21032
   All Data:
   Mobile name: white fluffy kitten 
   Sex: female Room: 21037 Killed: 0
   Level: 1
   (Str: 13+(0))(Int: 13+(0))(Wis: 13+(0))(Dex: 13+(0))(Con: 13+(0))(Cha: 13+(0)-(2))(Luc: 13+(0))
   Hps: 20/20 Mana: 0/0 Move: 100/100
   Hitroll:    18 [   10] Align: 0     Armorclass: 96
   Damroll:    28 [   20] Wimpy: 0     Position: 8[sitting]
   Fighting: (none)          Master: (none)          Leader: (none)
   MentalState: -10
   Save versus: 0 0 0 0 0       Items: (0/5)  Weight (0/13)
   Year: 0      Secs: 0  Timer: 0  Gold: 50
   Affected by: 
   Index Programs: 
   Speaks: 
   Speaking: 
   Languages: common elvish dwarven pixie ogre orcish trollish halfling gith gnome 
   Shortdesc: A fluffy white kitten
   Longdesc: A fluffy white kitten is exploring.
   Vnum: 21032 Count: 1
   Mob hit min/max: 0-0
   NumAttacks : 0
   Body Parts: ear tail haunches paws
   Defenses: dodge
   Act Flags: npc pet pacifist prototype
   Index Act Flags: npc wimpy pet prototype

- Use MLIST to display a list of all mobs and vnums in your area.

   Usage: mlist [free] [<start vnum>] [<end vnum>]
   If nothing is specified it will show all mobiles in the area.
   If free is specified it will show all free mobile vnums in the area.
   If <start vnum> is used it will show all mobiles at and after that vnum.
   If <end vnum> is used it will show all mobiles from the start to the end vnum.

- Use MDELETE to delete a mob in your area.

   Usage: mdelete <vnum>
   This command allows you to remove the specified mobile vnum from the mud.

- Use MWHERE to find mobs of a particular name.

   Usage: mwhere <name>
   This command will show you the locations of all mobiles with a particular name
   currently in the game.

- Use MINVOKE to create an additional instance of a mob. This does not tie the mob to a reset.

   Usage: minvoke <vnum>/<keyword>
   This command allows you to invoke an instance of the specified mobile.

- Use MFIND to find mobs of a particular name.

   Usage: mfind <name>
   This command will show all mobiles with the specified name.



MOB PROGRAMS
--------------
(See mudprograms.txt for more information on programs)

- Use MPEDIT to create/edit/delete mob programs.

   Usage:  mpedit <mobile> <command> [number]  [program] [arguments]
           mpedit <mobile> add       <program> <arguments>
           mpedit <mobile> insert    <number>  <program> <arguments>
           mpedit <mobile> edit      <number>  [program] [arguments]
           mpedit <mobile> delete    <number>
   Add, insert and edit will put you into the line editor to edit your
   program. The arguments consist of a trigger, plus any arguments
   associated with that trigger.

- Use MPCOPY to copy a mob program from one mob to another.

   Usage: mpcopy <mobile1> <program> [number] <mobile2>
          mpcopy <mobile1> all <mobile2>
          mpcopy <mobile1> all <mobile2> <program>

   Program being one of:
   act speech rand fight hitprcnt greet allgreet
   entry give bribe death time hour script

   This command allows all/specified program(s) to be copied from one mobile to
   another one.

- Use MPSTAT to display any programs on a mob.

   Usage: mpstat <mob/mobvnum> full/<program #>
   This command will display all of the mobprograms that have been written for the
   specified mob.


CREATE A SHOPKEEPER
--------------------

- See rooms.txt for how to create shops and shopkeepers, including repair shops, pet shops and mobs capable of making repairs.


DETERMINING HPS/HITROLL/DAMROLL
---------------------------------

HPs are expressed as a #d#+# value so that when the mob repops, the MUD can generate a random level of HPs. What this means is; (number of dice) x (dice size) + (number). So a L1 mob might have 1d10+90 HPs or a range of 91-100 HPs depending on how it repops. 
If you wish to generate a specific level of HPs, say 500 HPs, it would translate to: 1d1+499.
A general rule of thumb starts with NO LESS than 100 hitpoints PER LEVEL of mob. 

    Mob Level  |  Min HPS/LVL
    -------------------------
      1-10     |    10-25
     11-20     |    25-50
     21-30     |    50-100
     31-40     |    100-200
     41-50     |    200+

Think about the level of characters intended to be in your area attacking your mobiles. Then go find out what their average stats are. Pay particular attention to Hitroll, Average damage (which means damroll as well as average weapon damage), armor class, alignment and avg max hitpoints.

Damage is generated the same way as HPs; (numdice)x(dicesize)+(number). So a mob doing 5d8+12 damage will generate a range of 17-52 points of damage each time it lands a blow.
(I usually try to make the damage done by a mob comparable to that done by a warrior of the same level)

